package com.ssy.invoicing.test;

import java.awt.Color;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.pdfbox.exceptions.COSVisitorException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.edit.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDFont;
import org.apache.pdfbox.pdmodel.font.PDType1Font;

import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Font;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfWriter;

public class PDFoperator {

    /**
     * @param args
     */
    public static void main(String[] args) {
        //testOne();
        //testTwo();
        try {
            pdfboxTest();
        } catch (COSVisitorException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public static void testOne() {
        System.out.println("Hello World");
        // 创建一个Document对象  
        Document document = new Document();
        try {
            // 生成名为 HelloWorld.pdf 的文档  
            PdfWriter.getInstance(document, new FileOutputStream("D:\\report\\HelloWorld.pdf"));

            // 添加PDF文档的一些信息  
            document.addTitle("Hello World example");
            document.addAuthor("Bruno Lowagie");
            document.addSubject("This example explains how to add metadata.");
            document.addKeywords("iText, Hello World, step 3, metadata");
            document.addCreator("My program using iText");
            // 打开文档，将要写入内容  
            document.open();
            // 插入一个段落  
            document.add(new Paragraph("Hello World!"));

        } catch (DocumentException de) {
            System.err.println(de.getMessage());
        } catch (IOException ioe) {
            System.err.println(ioe.getMessage());
        }
        // 关闭打开的文档  
        document.close();
    }

    public static void testTwo() {
        // 创建一个Document对象  
        Document document = new Document();
        try {
            // 生成名为 AsianTest.pdf 的文档
            PdfWriter.getInstance(document, new FileOutputStream("D:\\report\\AsianTest.pdf"));
            /**
             * 新建一个字体,iText的方法 STSongStd-Light 是字体，在iTextAsian.jar 中以property为后缀
             * UniGB-UCS2-H 是编码，在iTextAsian.jar 中以cmap为后缀 H 代表文字版式是 横版， 相应的 V 代表
             * 竖版
             */
            //下面的那两句要有，不然的话，中文就出不来  
            BaseFont bfChinese = BaseFont.createFont("STSongStd-Light", "UniGB-UCS2-H", false);
            BaseColor color = new BaseColor(Color.GREEN);
            Font fontChinese = new Font(bfChinese, 12, Font.NORMAL, color);
            //Font fontChinese = new Font();
            // 打开文档，将要写入内容  
            document.open();
            // 插入一个段落  
            Paragraph par = new Paragraph("我们", fontChinese);
            document.add(par);
        } catch (DocumentException de) {
            System.err.println(de.getMessage());
        } catch (IOException ioe) {
            System.err.println(ioe.getMessage());
        }
        // 关闭打开的文档  
        document.close();
    }
    
    public static void pdfboxTest() throws IOException, COSVisitorException {
        PDDocument document = new PDDocument(); //创建一个空文档
        PDPage page = new PDPage();         //创建一个新的页
        PDFont font = PDType1Font.HELVETICA_BOLD; //获得一种字体
        document.addPage(page);          //把页面加入文档中间
        //创建有个输出流
        PDPageContentStream contentStream = new PDPageContentStream(document, page); 
        //开始编辑页面
        contentStream.beginText();
        //设置字体
        contentStream.setFont( font, 12 );
        //设置文字位置（x，y）
        contentStream.moveTextPositionByAmount( 100, 700 );
        //画文字 ‘hellword’
        contentStream.drawString( "中文试试 !");
        //结束编辑
        contentStream.endText();
        //关闭流
        contentStream.close();
        //保存文件
        document.save("D:\\report\\Test.pdf");
        //关闭文档
        document.close();
    }

}
